package com.wei.czz.framework.game.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wei.czz.common.dto.game.GameDto;
import com.wei.czz.common.po.game.GamePo;
import com.wei.czz.common.tool.PageDto;
import com.wei.czz.common.vo.common.UpdateStatusVo;
import com.wei.czz.common.vo.game.GameFormVo;
import com.wei.czz.common.vo.game.GameVo;
import com.wei.czz.framework.game.entity.GameEntity;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-03-16 11:35:49
 * className: GameService 游戏请求服务接口
 * version: 1.0
 * description:
 */
public interface GameService extends IService<GameEntity> {

    /**
     * 保存游戏操作
     * @param gameVo 游戏参数对象
     */
    void saveGame(GameVo gameVo);

    /**
     * 分页获取游戏操作
     * @param gameFormVo 参数对象
     * @return 游戏数据
     */
    PageDto<GameDto> getGamePageList(GameFormVo gameFormVo);

    /**
     * 获取游戏缓存数据操作
     * @param id 游戏主键
     * @return 游戏缓存数据
     */
    GamePo getGamePo(Long id);

    /**
     * 修改游戏操作
     * @param gameVo 游戏参数对象
     */
    void updateGame(GameVo gameVo);

    /**
     * 修改游戏状态操作
     * @param updateStatusVo 参数对象
     */
    void updateGameStatus(UpdateStatusVo updateStatusVo);

    /**
     * 清理游戏奖品池初始化状态操作
     * @param id            游戏主键
     * @param prizePoolFlag 是否初始化奖品池
     * @param userId        操作用户主键
     */
    void updatePrizePoolFlag(Long id, Integer prizePoolFlag, Long userId);

    /**
     * 更新游戏默认奖品操作
     * @param id         游戏主键
     * @param prizeId    新默认奖品主键
     * @param oldPrizeId 旧默认奖品主键
     * @param optUserId  操作用户
     */
    void updateDefaultPrize(Long id, Long prizeId, Long oldPrizeId, Long optUserId);

    /**
     * 删除游戏操作
     * @param idList 游戏主键列表
     */
    void deleteGame(List<Long> idList);

}

